﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>高级热键功能 | AutoHotkey v2</title>
<meta name="description" content="Learn advanced 热键 features such as using any keys as modifiers or automating game actions on the screen." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="static/theme.css" rel="stylesheet" type="text/css" />
<script src="static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>

<body>
<h1>高级热键功能</h1>

<h2 id="toc">目录</h2>
<ul>
  <li><a href="#general">常规</a>
    <ul>
      <li><a href="#easy-to-reach">重映射容易按到但却很少使用的按键</a></li>
      <li><a href="#keys-as-modifiers">使用任意键作为修饰符</a></li>
      <li><a href="#AltTab">让鼠标滚轮执行 Alt-Tab</a></li>
      <li><a href="#keyboard-to-mouse">使键盘成为鼠标按键</a></li>
      <li><a href="#context-sensitive">让你的热键是上下文相关的</a></li>
      <li><a href="#hotstrings">定义在键入时展开的缩写</a></li>
    </ul>
  </li>
  <li><a href="#gaming">游戏</a>
    <ul>
      <li><a href="#wear-and-tear">减少手指的磨损</a></li>
      <li><a href="#mouse-hotkeys">创建鼠标热键</a></li>
      <li><a href="#pass-through">创建 "穿透" 热键</a></li>
      <li><a href="#game-actions">在屏幕上自动化游戏动作</a></li>
      <li><a href="#keyboard-hook">使用键盘钩子</a></li>
    </ul>
  </li>
  <li><a href="#related">相关主题</a></li>
</ul>

<h2 id="general">常规</h2>

<h3 id="easy-to-reach">重映射容易按到但却很少使用的按键</h3>
<p>键盘上一些很容易按到的键却不经常使用. 我们要让这些键变得更有用. 例如, 如果您很少使用右 <kbd>Alt</kbd> 键, 那么可以让它执行常用的操作:</p>
<pre>RAlt::信息框 "You pressed the right ALT key."</pre>
<p><p>您甚至可以在保持右 <kbd>Alt</kbd> 键原来的功能的同时, 把它作为其他热键的 "前缀" 键来实现上述功能. 在下面的例子中, 右 <kbd>Alt</kbd> 作为前缀键, 这让它自动地像平常那样修饰其他 <strong>所有</strong> 的按键. 但如果您按下并放开右 <kbd>Alt</kbd> 期间没有按下其他键, 那么它的热键功能(上面的例子) 会立即生效:</p>
<pre>RAlt &amp; j::AltTab</pre>

<h3 id="keys-as-modifiers">使用任意键作为修饰符</h3>
<p>修饰符不再局限于 <kbd>Ctrl</kbd>, <kbd>Alt</kbd>, <kbd>Shift</kbd> 和 <kbd>Win</kbd>; 您可以使用 <strong>任意</strong> 两个按键或鼠标按钮组成自定义热键. 例如: 按住 Numpad0 且按下 Numpad1 来执行热键(<code>Numpad0 &amp; Numpad1::</code>); 按住 <kbd>CapsLock</kbd>并按下另一个键或点击鼠标右键(<code>CapsLock &amp; RButton::</code>). 此时(运行热键时), <kbd>CapsLock</kbd> 键的状态(大写或小写) 不会发生改变. 有关详情, 请参阅<a href="Hotkeys.htm#combo">自定义组合键</a>.</p>

<h3 id="AltTab">让鼠标滚轮执行 Alt-Tab</h3>
<p>使用鼠标滚轮(或您选择的其他任意键) 完全代替 Alt-Tab. 点击滚轮来显示窗口选择菜单, 转动滚轮来浏览菜单. 当 Alt-Tab 菜单没有出现时滚轮仍保持正常的功能. 语法:</p>
<pre>MButton::AltTabMenu
WheelDown::AltTab
WheelUp::ShiftAltTab</pre>

<h3 id="keyboard-to-mouse">使键盘成为鼠标按键</h3>
<p>让键盘按键 <strong>成为</strong> 鼠标按钮, 或当您按住某个键或鼠标按钮时持续重复某个动作. 有关示例请参阅<a href="misc/Remap.htm#RemapMouse">重映射页面</a>.</p>

<h3 id="context-sensitive">让你的热键是上下文相关的</h3>
<p> 让最容易使用的热键根据不同的窗口类型执行适合的操作. 在下面的例子中, 右 <kbd>Ctrl</kbd> 键会根据活动窗口是记事本还是计算器执行不同的操作:</p>
<pre>#动态判断 窗口已激活("ahk_class Notepad")
RControl::选择菜单 ,, "File", "Save"  <em>; 在记事本中保存当前文件.</em>

#动态判断 窗口已激活("Calculator")
RControl::发送 "^c!{tab}^v"  <em>; 复制计算器的结果到之前的活动窗口.</em></pre>
<p>有关详情, 请参阅 <a href="commands/_HotIf.htm">#动态判断</a>.</p>

<h3 id="hotstrings">定义在键入时展开的缩写</h3>
<p>也称为<a href="Hotstrings.htm">热字串</a>. 不需要经过特殊的训练或脚本编写经验. 例如, 包含下列语句的脚本执行后, 在您输入 ceo, cfo 和 btw 时会自动扩展它们:</p>
<pre>::ceo::Chief Executive Officer
::cfo::Chief Financial Officer
::btw::by the way</pre>

<h2 id="gaming">游戏</h2>

<h3 id="wear-and-tear">减少手指的磨损</h3>
<p>别人拼血流汗时, 您只需动动手指, 就可执行一系列复杂的操作. 因为能使用几乎<a href="KeyList.htm">任何按键</a>作为热键, 包括单个字母, 方向键, 数字小键盘按键, 甚至是修饰键本身(<kbd>Ctrl</kbd>/<kbd>Alt</kbd>/<kbd>Win</kbd>/<kbd>Shift</kbd>).</p>

<h3 id="mouse-hotkeys">创建鼠标热键</h3>
<p>创建鼠标热键, 包括鼠标滚轮按钮(MButton) 和往上/往下/往左/往右转动滚轮(WheelUp, WheelDown, WheelLeft 和 WheelRight). 您还可以把键盘键和鼠标按钮组合使用. 例如, 按住 Ctrl 时点击鼠标右键可以写为 <code>^RButton::</code>.</p>

<h3 id="pass-through">创建 "穿透" 热键</h3>
<p>例如, 点击鼠标左键一方面触发热键, 另一方面点击仍可以被发送到游戏中(语法: <code>~LButton::</code>).</p>

<h3 id="game-actions">在屏幕上自动化游戏动作</h3>
<p>使用例如 <a href="commands/PixelSearch.htm">找色</a>, <a href="commands/PixelGetColor.htm">获取像素颜色</a> 和 <a href="commands/ImageSearch.htm">找图</a> 的命令可以自动化游戏操作.</p>

<h3 id="keyboard-hook">使用键盘钩子</h3>
<p>使用<a href="commands/_UseHook.htm">键盘钩子</a>来实现热键, 当游戏占用较多 CPU 资源时, 这种方法会比其他方法响应的更及时. 使用钩子还可以解除在游戏中只有某些按键才可以 "映射" 到游戏动作上的限制.</p>

<h2 id="related">相关主题</h2>
<ul>
  <li><a href="Hotkeys.htm">热键</a></li>
  <li><a href="Hotstrings.htm">热字串</a></li>
  <li><a href="misc/Remap.htm">重映射按键</a></li>
</ul>

</body>
</html>